package org.springleaf.utils;

import java.beans.PropertyDescriptor;

import org.apache.commons.beanutils.PropertyUtils;

public class BeanUtils extends org.apache.commons.beanutils.BeanUtils{
	
	/**
	 * 对象间相同的非空属性复制
	 * @param dest 目标
	 * @param orig 数据源
	 * @throws Exception
	 */
	public static void copyPropertiesByNotNull(Object dest,Object orig) {
		PropertyDescriptor[] origPds= PropertyUtils.getPropertyDescriptors(orig.getClass());
		PropertyDescriptor[] destPds= PropertyUtils.getPropertyDescriptors(dest.getClass());
		
		for (PropertyDescriptor origPd : origPds) {
			if(origPd.getName().equals("class")){
				continue;
			}
			Object v = null;
			try {
				v = PropertyUtils.getProperty(orig, origPd.getName());
			} catch (Exception e) {
				e.printStackTrace();
			}
			if(v != null){
				for (PropertyDescriptor destPd : destPds) {
					if(origPd.getName().equals(destPd.getName())){
						try {
							PropertyUtils.setProperty(dest, destPd.getName(), v);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}
			}
		}
	}
}
